Bar codes contain information in the bars and spaces that is interpreted by electronic devices, referred to herein as bar code reading devices. A bar code reading device, including, for example, a scanner, wand, optical scanner or verifier, reads the bars and spaces by measuring their widths and decoding the dimensions according to the rules of the particular bar code, known as its “symbology.” A bar code symbology is a set of encoding algorithms that essentially provide the grammar for the production of the bar code pattern. As in written languages, bar code symbologies have rules of grammar that dictate how the pattern of bars and spaces are formed for any particular code data. Examples of recognized bar code symbologies include UCC/EAN 128, Codabar, Code 128, Code 39, Code 93, UPC-A, UPC-E, JAN-13, ITF, ISSN, ITF and ISBN. Typically, a bar code reading device determines the differences between the thickness of the bars and the thickness of the spaces by counting light and dark pulses of light as the reading device is drawn across the bars.
Most goods are marked with at least one bar code. In addition to the bar code, another character or image, such as a company logo or other trademark, may be placed on the good. This character or image frequently represents the source of the good. For example, a telephone made by AT&T has the AT&T logo printed on the telephone, and the telephone also comprises a barcode that contains information directed to the telephone, for example, the telephone model number. Placing both a bar code and/or a separate identifying or other human recognizable icon on a good is expensive. For example, two printing processes must be performed, and two separate tasks are required to place the bar code and the icon separately on the good.
Alternatively, some goods are marked with a bar code and no other identifying elements. In such cases, the source of the good, therefore, cannot be discerned by an intended purchaser or user with the aid of a bar code reading device. The bar code itself may identify the product and its source, but that is not discernable without a bar code reading device.
Among the most common bar code symbologies in the U.S. and Canada is the Universal Product Code (UPC-A). As shown in FIG. 1, a UPC-A bar code symbol's pattern of bars and spaces is a unit bar 10. Unit bar 10 is a narrow bar having a predetermined width for a bar code symbol at a given magnification. The dimensions of the bars and spaces in the symbol are exact multiples of the unit bar. Thus, double bar 12 in the symbol is twice as wide as unit bar 10, while triple bar 14 is three times as wide and quadruple bar 16 is four times as wide.
Each bar code symbol begins and ends with start and stop characters, referred to herein as frame bars. Frame bars are unique to the symbology involved and instruct a bar code reading device what symbology to expect when reading the symbol. The frame bars in the symbol shown in FIG. 1 are composed of unit bars 10.
In an ideal UPC symbol, the unit bar has a predetermined thickness and all other bars and the spaces therebetween have thicknesses that are exact multiples of the unit bar thickness. If, therefore, when a UPC symbol is printed on one or more bars and found to be thicker or thinner than the thickness of the unit bar of the ideal symbol, then the dimensions of the bars and spaces which make up the symbol correspondingly deviate from those of the ideal symbol.
For each bar code symbology, there are published specifications to provide instructions for those producing bar codes. ANSI standards are widely regarded as the accepted standard for each symbology. Bar code systems are issued with the instructions so that all participants will conform to the published standards. In order to measure how closely a bar code symbol meets these standards, electronic verifiers can be used.
Whether a bar code symbol can be read depends, in part, on the ability of a bar code reading device to measure the relative widths of the bars and spaces of a bar code. The ability of a bar code reader to discern the relative widths of the bars and spaces may depend on increments as small as 1/10,000th of an inch. A misprinted bar code symbol can be rendered unreadable by bar code reading devices because of defects occurring during the production of the bar code, for example, the printing process. For example, ink spots, voids, smudges and the like in a bar code can render the bar code unreadable.
Symbologies that use only two thicknesses of bars and spaces set a value for thick bars and spaces in comparison to thin ones. This is known in the industry as scaling and represents a wide/narrow ratio. For example, a wide/narrow ratio of 2:1 indicates that a wide bar has twice the width of a thin bar. If a printer has a dot size of 1/12th inch wide, six dots are required to print a half-inch image, and 12 dots to produce a one inch image. The image, therefore, requires a multiple of six dots, no matter how wide the image is printed. If a bar code requires ¾ of an inch for a wide bar, the wide/narrow ratio suffers because the printer in this example is unable to print a pattern of ¾ inches and maintain the same wide/narrow ratio. Since such a printer only prints whole dots, improper scaling results in problems with the bar code's production and readability.
Some of the more serious bar code printing problems are caused by the physical properties of ink on various substrates. Due to the viscosity of ink and the porosity of different kinds of paper, images tend to more or less spread. The spread caused by the ink or paper is called print gain. Print gain results in bars being printed too thickly and the intervening spaces become too thin, thereby distorting the dimensions of the symbol and impairing its readability by a scanner.
Print gain may cause enormous dimensional changes, for example, by doubling the width of printed bars. A very thin ink on a nonporous, glossy substrate may cause print gains of 50% to 100% or more. To overcome the problem of print gain, bar code designers use a technique known in the industry as “bar width reduction.” The technique of bar width reduction involves reducing printed bars in anticipation of an expected print gain. By reducing the width of the bars, bar code reading devices should be able to interpolate the data in the bar code symbol on the substrate.
Print gain may occur repeatedly during a production process. Many operations, e.g., image setting, typesetting, scanning, producing plates, and pre-press operations can contribute to print gain. The press run may contribute the most to print gain. Moreover, the different production processes may counteract each other, thus the effects of one process may be negated by another. Alternatively, the effects of the processes are cumulative, compounding one process's print gain upon another's.
Notwithstanding a poorly produced bar code, the information embedded therein may still be readable by a bar code reading device. Many bar code symbologies afford a degree of tolerance with respect to the production quality of a bar code. For example, the Code 39 bar code symbology permits up to 50% of a single bar to be not perfectly black. As long as the bar remains within the tolerance level of the symbology, for example, is at least 50% black for Code 39, the bar code remains readable by a bar code reading device. Another kind of tolerance of a bar code symbology includes allowing for a hole or other void within a bar. So long as the void is sufficiently small, the bar code is still readable by a bar code reading device.
Moreover, an averaging technique is employed by many bar code reading devices that enables the devices to interpret a bar code that is not perfectly produced. For example, a typical UPC-A bar code with thirty bars and 29 spaces yields 670 dots with a handheld scanner. This averages to eleven dots per unit bar. However, if one is trying to determine whether a 13 millimeter bar is 12 or 14 millimeters thick, the eleven dots per unit bar provide insufficient information. To compensate for this lack of information, well-known averaging techniques are employed to extract the information contained in the bar code. Prior art averaging techniques are useful to extract information in bar codes that have a scaling problem.